package org.hubx.maven;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

/*
 * Copyright 2001-2005 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;

/**
 * Goal which touches a timestamp file.
 *
 */
@Mojo(name = "new")
public class NewCmdMojo extends AbstractMojo {
	private static final String CASE_NAME=System.getProperty("jib.case.name","");
	private static final String ZK_LIST=System.getProperty("jib.zk.list","zookeeper.aif.org:2181");
	private static final String REGISTRY_HUB=System.getProperty("jib.registry.hub","registry.aif.org:5000");


	private static final String[] CMD = new String[] {
			//
			"mvn compile hubx:hub-image:1.0:build",
			//
			"-Djib.from.image="+REGISTRY_HUB+"/cfxl/alpine-jdk8:latest",
			//
			"-Djib.to.image="+REGISTRY_HUB+"/"+CASE_NAME,
			//
			"-Djib.extraDirectories.paths=src/test/resources,src/test/resources/cases/"+CASE_NAME+",src/cases/"+CASE_NAME,
			//
			"-Djib.container.mainClass=org.hubx.boot.Booter",
			//
			"-Djib.container.jvmFlags=\"-Duser.dir=/app/resources,-Dfile.encoding=UTF-8,-Dzk.server.list="+ZK_LIST+"\"",
			//
			"-Djib.httpTimeout=60000",
			//
			"-Dhttps.protocols=TLSv1",
			//
			//"-Djib.container.extraClasspath=/app/resources",
			//
			"-Djib.extraDirectories.place=/app/resources",
			//
			"-Djib.container.creationTime=USE_CURRENT_TIMESTAMP",
			//
			"-Djib.allowInsecureRegistries=true",
			//
			"-Djib.to.tags=latest" };

	/**
	 * Location of the file.
	 */
	@Parameter(defaultValue = "${project.build.directory}", property = "outputDir", required = true)
	private File outputDirectory;

	public void execute() throws MojoExecutionException {
		if("".equals(CASE_NAME)) {
			throw new MojoExecutionException("-Djib.case.name can't be null,please check!");
		}
		
		File f = outputDirectory;

		if (!f.exists()) {
			f.mkdirs();
		}

		File touch = new File(f.getParent(), CASE_NAME+".bat");

		FileWriter w = null;
		try {
			w = new FileWriter(touch);
			StringBuffer buf = new StringBuffer();
			for (String cmd : CMD) {
				System.out.println(cmd);
				buf.append(cmd).append(" ");
			}
			w.write(buf.toString());
		} catch (IOException e) {
			throw new MojoExecutionException("Error creating file " + touch, e);
		} finally {
			if (w != null) {
				try {
					w.close();
				} catch (IOException e) {
					// ignore
				}
			}
		}
	}
}
